﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BusinessClass.StateMachine.Core
{
    public class StateFactory
    {
        public static ContinueState<C, N> CreateContinueState<C, N>(ISate<C> cs, Action<C> firstFinishAction, ISate<N> ns)
        {
            return new ContinueState<C, N>(cs, firstFinishAction, ns);
        }
        public static ContinueState<C, N> CreateContinueState<C, N>(ISate<C> cs, ISate<N> ns)
        {
            return new ContinueState<C, N>(cs, ns);
        }
        public static ParallelStates<T> CreateParallelStates<T>(ISate<T>[] states)
        {
            return new ParallelStates<T>(states);
        }
        public static OptionalState<T> CreateOptionalState<T>(bool ignore, ISate<T> internalState)
        {
            return new OptionalState<T>(ignore, internalState);
        }
    }
}
